package model;

import java.util.ArrayList;
import java.util.List;

import javax.swing.table.AbstractTableModel;

import entidade.Divisao;

@SuppressWarnings("serial")
public class DivisaoTableModel extends AbstractTableModel {
	
	//constantes que v�o representar as colunas
    //(s� para facilitar o entendimento do c�digo)
    private final int COL_CODIGO = 0;
    private final int COL_DESCRICAO = 1;
    private final int COL_OPERADOR = 2;
 
    //lista dos itens que ser�o exibidos
    private List<Divisao> divisoes;
 
    public DivisaoTableModel() {
        divisoes = new ArrayList<>();
    }
 
    public DivisaoTableModel(List<Divisao> lista) {
        this();
        divisoes.addAll(lista);
    }
 
    public int getRowCount() {
        //cada produto na lista ser� uma linha
        return divisoes.size();
    }
 
    public int getColumnCount() {
        //vamos exibir s� Nome e Quantidade, ent�o s�o 2 colunas
        return 3;
    }
 
    @Override
    public String getColumnName(int column) {
        //qual o nome da coluna
        if (column == COL_CODIGO) {
            return "C\u00F3digo";
        }
        if (column == COL_DESCRICAO) {
            return "Descri\u00E7\u00E3o";
        }
        if (column == COL_OPERADOR){
                return "Operador";
        }
        return "";
    }
 
    @Override
    public Class<?> getColumnClass(int columnIndex) {
        //retorna a classe que representa a coluna
        if (columnIndex == COL_CODIGO) {
            return Integer.class;
        }
        if (columnIndex == COL_DESCRICAO) {
            return String.class;
        }
        if (columnIndex == COL_OPERADOR){
                return String.class;
        }
        return String.class;
    }
 
    public Object getValueAt(int rowIndex, int columnIndex) {
        //pega o produto da linha
        Divisao d = divisoes.get(rowIndex);
 
        //verifica qual valor deve ser retornado
        if (columnIndex == COL_CODIGO) {
            return d.getCodigo();
        }
        if (columnIndex == COL_DESCRICAO) {
            return d.getDescricao();
        }
        if (columnIndex == COL_OPERADOR){
                return d.getOperador();
        }
        return "";
    }
 
    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        //pega o produto da linha
        Divisao d = divisoes.get(rowIndex);
 
        //verifica qual valor vai ser alterado
        if (columnIndex == COL_CODIGO) {
            d.setCodigo(Integer.parseInt(aValue.toString()));
        }
        if (columnIndex == COL_DESCRICAO) {
            d.setDescricao(aValue.toString());
        }
        if (columnIndex == COL_OPERADOR) {
                d.setOperador(aValue.toString());
        }
 
        //avisa que os dados mudaram
        fireTableDataChanged();
    }
 
    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        //no nosso caso todas v�o ser edit�veis, entao retorna true pra todas
        return false;
    }
   
    public Divisao get(int pos){
        return divisoes.get(pos);
    }


}
